// IO 函子
// IO函子中 _.value 是一个函数，这是把函数作为值处理
// 把不纯得动作包装到value中，延迟执行（惰性执行）
// 把不纯得操作交给操作者 来处理 （甩锅）
const fp = require ('lodash/fp')
class Io {
    constructor (fn) {
        this._value = fn
    }
    static of(x) {
        return new Io (function() {
            return x
        })
    }
    map(fn) {
        // 把当前得value 和传入得fn 组成一个新得函数
        return new Io(fp.flowRight(fn, this._value))
    }
}
let r = Io.of(process) //当前进程
    .map( x => x.execPath) //process.execPath 属性返回启动 Node.js 进程的可执行文件的绝对路径名。
console.log(r._value())


